home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection Student Program / ADC Tools Sampler CD Disk 3 1999.iso / Documentation / Books / Learn Java on the Macintosh / Learn Java Projects / 13.01 - applet params / SimpleDraw.java < prev    next >
Text File  |  1996-04-22  |  4KB  |  132 lines

  1. /* -------------------------------------------------------------
  2. This applet paints a circle or square of the color you've chosen
  3. wherever you click. This applet keeps a list of the shapes you've drawn
  4. and paints all the shapes in the list when it repaints. It allows the
  5. HTML file to supply a list of colors for the shapes.
  6.  
  7. Java's classes: Applet    (applet)
  8.                 Event     (awt)     user-generated action
  9.                 Graphics  (awt)     used for drawing
  10.                 Color     (awt)     defines colors
  11.                 Choice    (awt)     shape and color selection choices
  12.                 Vector    (util)    list of shapes
  13.  
  14. Custom classes: SimpleDraw
  15.                 Circle              defines and draws circles
  16.                 Square              defines and draws squares
  17.                 Shape                a common ancestor for circles and squares
  18.  
  19. ------------------------------------------------------------- */
  20.  
  21. import java.applet.Applet;
  22. import java.util.*;
  23. import java.awt.*;
  24.  
  25. public class SimpleDraw extends Applet {
  26.    Vector  drawnShapes;
  27.    Choice  shapeChoice;
  28.    Choice  colorChoice;
  29.    
  30.    /** Create the GUI. */
  31.    public void init() {
  32.       drawnShapes = new Vector();
  33.       
  34.       shapeChoice = new Choice();
  35.       shapeChoice.addItem("Circle");
  36.       shapeChoice.addItem("Square");
  37.             
  38.       add(shapeChoice);
  39.       
  40.       colorChoice = new Choice();      
  41.       colorChoice.addItem(getParameter("color1")); // supplied by applet
  42.       colorChoice.addItem(getParameter("color2")); // supplied by applet
  43.       colorChoice.addItem(getParameter("color3")); // supplied by applet
  44.       
  45.       add(colorChoice);
  46.    }
  47.    
  48.    /** Draw all the shapes. */
  49.    public void paint(Graphics g) {
  50.       Shape s;
  51.       int numShapes;
  52.       
  53.       numShapes = drawnShapes.size();
  54.       for (int i = 0; i < numShapes; i++) {
  55.       
  56.          s = (Shape)drawnShapes.elementAt(i);
  57.          
  58.          // When the shape draws, circles and squares each invoke their own
  59.          // draw method, depending on which shape this is.
  60.          s.draw(g);  
  61.       }
  62.    }
  63.    
  64.    /** Create a new shape. */
  65.    public boolean mouseUp(Event e, int x, int y) {
  66.    
  67.       Shape s;  // This shape will be either a circle or a square.
  68.    
  69.       String shapeString = shapeChoice.getSelectedItem();
  70.       String colorString = colorChoice.getSelectedItem();
  71.       
  72.       if (shapeString.equals("Circle"))
  73.          s = new Circle();
  74.       else
  75.          s = new Square();
  76.       
  77.       if (colorString.equals("Red"))
  78.          s.color = Color.red;
  79.       else if (colorString.equals("Green"))
  80.          s.color = Color.green;
  81.       else if (colorString.equals("Black"))
  82.          s.color = Color.black;
  83.       else if (colorString.equals("Blue"))
  84.          s.color = Color.blue;
  85.       else if (colorString.equals("Pink"))
  86.          s.color = Color.pink;
  87.       else if (colorString.equals("Cyan"))
  88.          s.color = Color.cyan;
  89.       else if (colorString.equals("Orange"))
  90.          s.color = Color.orange;
  91.       else
  92.          s.color = Color.white;  // default color
  93.          
  94.       s.x = x;
  95.       s.y = y;
  96.       
  97.       drawnShapes.addElement(s);
  98.       
  99.       repaint();
  100.       
  101.       return true;
  102.    }
  103.  
  104. }
  105.  
  106. /** Shapes provide common characteristics for the circle and square. */
  107. abstract class Shape {
  108.    static public final int shapeRadius = 20;
  109.    
  110.    Color color;
  111.    int x;
  112.    int y;
  113.    
  114.    abstract void draw(Graphics g);
  115. }
  116.  
  117. /** Draws and maintains circle information. */
  118. class Circle extends Shape {
  119.    void draw(Graphics g) {
  120.       g.setColor(this.color);
  121.       g.fillOval(this.x - shapeRadius, this.y - shapeRadius, shapeRadius * 2, shapeRadius * 2);
  122.    }
  123. }
  124.  
  125. /** Draws and maintains square information. */
  126. class Square extends Shape{
  127.    void draw(Graphics g) {
  128.       g.setColor(this.color);
  129.       g.fillRect(this.x - shapeRadius, this.y - shapeRadius, shapeRadius * 2, shapeRadius * 2);  
  130.    }
  131. }
  132.